package javase.ch06.annotation;

/**
 * 注解+属性
 * 1.如何声明带有属性的注解？
 *      语法：
 *      @interface 注解名称{
 *          数据类型 属性名称();
 *          数据类型 属性名称() default 默认值;
 *          数据类型 value();
 *          数据类型【】 属性名称();
 *      }
 *      注意：
 *      1).八大基本数据据类型：int、float、double、char、boolean、long、short、byte
 *      2).引用数据类型：String的API、Class、注解类型、枚举类型
 *      3).以上所有数据类型的数组形式
 *
 * 2.如何使用？
 *       语法：@注解名称(属性名称 = 属性值)
 *       注意：若属性值，存在默认值，则可以省略属性值
 * 3.注意：
 *      -情况1：
 *      @interface MyEmp2{
 *     String value();
 *      }
 *      使用时，可以省略value不写，直接复制
 */

@MyEmp(name = "张三", age = 18, salary = 5000.0, titles = {"程序员", "架构师"})
public class AnnotationDemo2 {
    @MyEmp(name = "张四", salary = 5000.0, titles = {"程序员"})
    private String userName;

    @MyEmp2("张三")
    public void eat(){

    }
}

@interface MyEmp{
    String name();
    int age() default 18;
    double salary();
    String[] titles();
}
//自定义注解 + 属性 + value
@interface MyEmp2{
    String value();
}
